Field
Embodiments of the present invention generally relate to network traffic acceleration. In particular, embodiments of the present invention relate to protocol segmentation offloading, such as Transmission Control Protocol (TCP) segmentation offloading (TSO).
Description of the Related Art
FIG. 1 conceptually illustrates TSO processing as it is typically performed. Large chunks of outbound network traffic, such as payload data 157, are typically broken down into smaller segments, such as packets 170. This process is typically performed by the TCP protocol in the host computer and is referred to as segmentation. When segmentation is performed on behalf of the host computer by separate hardware or a separate processor, such as one associated with a network interface controller (NIC), it is referred to as TCP packet Segmentation Offloading (TSO).
Conventional operating systems usually segregate virtual memory into kernel space 140 and user space 150. User mode applications, such as user process 120, are forbidden from writing to or otherwise accessing kernel space 140. User space 150 is the memory area in which user mode applications are permitted to operate.
Typically, TCP payload, such as payload data 157 is originated from a user process, such as user process 120. A kernel process 110 may create header data 145 and store the header data 145 in kernel space 140 of a system memory 130. TSO is used to increase system throughput and decrease central processing unit (CPU) usage; however, in traditional TSO implementations, in order to allow it to be physically addressed by a TCP segmentation unit 160, the payload data 157, which is stored in user space 150, needs to be copied from user space 150 to contiguous kernel space 140 by the CPU (not shown) to create a payload data copy 147. This movement of payload data from user space 150 to kernel space 140 within system memory 130 is CPU intensive and reduces outbound TCP traffic throughput.
Thus, there is a need in the art for improved outbound network traffic processing.